Flash memory

ABSTRACT

This disclosure describes techniques for using environmental variables to improve calibration of flash memory by adapting to changing threshold-voltage distributions. These techniques effectively increase the speed and/or accuracy at which flash memory can be written or read.

RELATED APPLICATION

The present disclosure is a continuation of U.S. application Ser. No.12/762,150, filed on Apr. 16, 2010, now U.S. Pat. No. 8,213,236, whichclaims priority to U.S. Provisional Patent Application Ser. No.61/171,332, entitled “Flash Memory”, filed Apr. 21, 2009, the disclosureof which is incorporated by reference herein in its entirety.

BACKGROUND

The background description provided herein is for the purpose ofgenerally presenting the context of the disclosure. Work of thepresently named inventors, to the extent the work is described in thisbackground section, as well as aspects of the description that may nototherwise qualify as prior art at the time of filing, are neitherexpressly nor impliedly admitted as prior art against the presentdisclosure.

Conventional flash memory stores data by storing electric charges inflash cells. The amount of electric charge stored sets a thresholdvoltage, which corresponds to a data value. It can be difficult,however, to precisely set an amount of charge to set an exact thresholdvoltage. As a result, the actual threshold voltages for flash cells inthe flash memory often follow a Gaussian distribution centered on atarget threshold voltage. The mean of the threshold-voltage distributionis often used as the target threshold voltage when writing to a cell,though this mean is often not the actual threshold voltage for thatcell.

Further still, the mean and variance of these threshold-voltagedistributions may change. To adapt to such changes, conventional methodsestimate the mean and variance of the threshold-voltage distributionsusing read backs from the flash cells. These conventional methods,however, are often slow to adapt, or are inaccurate in estimating,changes in the threshold-voltage distributions. Without an accurate andtimely estimate of the threshold-voltage distributions, writing andreading data from flash memory can be unreliable.

SUMMARY

This summary is provided to introduce subject matter that is furtherdescribed below in the Detailed Description and Drawings. Accordingly,this Summary should not be considered to describe essential features norused to limit the scope of the claimed subject matter.

A method is described that comprises receiving an environmentalvariable, the environmental variable affecting a threshold voltage of aflash memory cell, and setting a write configuration or a readconfiguration using the environmental variable, the write configurationuseable for writing a data value to the flash memory cell, the readconfiguration useable for reading a data value from the flash memorycell.

Another method is described that comprises receiving a threshold voltagevalue, the threshold voltage value calculated based on an environmentalvariable, and writing a data value to a flash memory cell using thethreshold voltage value as a target threshold voltage.

A system is described that comprises flash memory cells, a flashcontroller, and a calibrator associated with the flash controller, thecalibrator configured to receive an environmental variable, theenvironmental variable affecting threshold voltages of the flash memorycells, and set a write configuration or a read configuration using theenvironmental variable, the write configuration useable for writing datavalues to the flash memory cells, the read configuration useable forreading the data values from the flash memory cells.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is described with reference to the accompanyingfigures. In the figures, the left-most digit of a reference numberidentifies the figure in which the reference number first appears. Theuse of the same reference numbers in different instances in thedescription and the figures indicate similar or identical items.

FIG. 1 illustrates an operating environment.

FIG. 2 illustrates a chart showing an example relationship between anumber of cycles and a threshold voltage mean for flash memory inaccordance with an embodiment of the present invention.

FIG. 3 illustrates a chart showing an example relationship between adata retention time and a threshold voltage mean for flash memory inaccordance with an embodiment of the present invention.

FIG. 4 illustrates threshold-voltage distributions of two-bit-cell flashmemory cells.

FIG. 5 illustrates a method for setting a read and/or writeconfiguration using an environmental variable in accordance with anembodiment of the present invention.

FIG. 6 illustrates an example of threshold-voltage distributions for adata value of flash memory cells in accordance with an embodiment of thepresent invention.

FIG. 7 illustrates a method for writing data to a flash memory cellusing a threshold voltage value in accordance with an embodiment of thepresent invention.

FIG. 8 illustrates a method for reading data from a flash memory cellusing a reference voltage in accordance with an embodiment of thepresent invention.

DETAILED DESCRIPTION

This disclosure describes techniques for using environmental variablesto calibrate flash memory by adapting to changing threshold-voltagedistributions. These techniques effectively increase the speed and/oraccuracy at which flash memory can be written to or read from.

In the discussion that follows, an operating environment is described.Methods are also described that may be employed in the operatingenvironment as well as other environments. In the discussion below,reference will be made to the environment by way of example only and,therefore, implementations described below are not limited to thedescribed environment.

Operating Environment

FIG. 1 illustrates an operating environment 100 having flash memory 102.Flash memory 102 includes a flash-memory-cell array 104 including flashmemory cells 106 and a flash controller 108 including a calibrator 110.

Flash-memory-cell array 104 contains flash memory cells 106, each cell106 stores one or multiple bits of information by storing an amount ofcharge effective to set a threshold voltage. Flash controller 108controls operation and data communications for flash memory 102.Calibrator 110 calibrates read and write configurations for flash memory102, including determining mean threshold voltage values for each datavalue that can be stored within a single flash memory cell 106.Calibrator 110 also determines a standard deviation for each of the meanthreshold voltage values, which, along with the mean threshold voltage,effectively determines the Gaussian distribution of threshold voltagesfor each data value. Calibrator 110 may determine near optimal oroptimal reference voltages for reading each of the data values.Calibrator 110 stores the mean threshold voltages, the standarddeviations, and the reference voltage values as flash-memory parametersin read and write configurations for use by flash controller 108 to reador write data values in flash memory cells 106.

Calibrator 110 uses environmental variables to determine theseflash-memory parameters. Environmental variables include a currentoperating temperature of the flash memory, power-supply voltage,manufacturing processes, materials, or design, the amount of timeelapsed since data was last written to a flash memory cell, and thecycle count, to name a few. The cycle count indicates the number oftimes that a flash memory cell has been written. Consider FIG. 2, whichillustrates a cycle/threshold chart 200 showing a relationship for flashmemory between an environmental variable, here a number of cycles 202,and a mean threshold voltage 204. Note that this particular relationshipis dependent on many factors and varies from flash memory to flashmemory. Nonetheless, generally the higher the cycle count, the higherthe mean voltage threshold.

Consider also FIG. 3, which illustrates a retention/threshold chart 300showing a relationship for flash memory between another environmentalvariable, here data retention time 302, and a mean threshold voltage304. Like cycle count, this environmental variable is dependent onmanner factors, varying from flash memory to flash memory. Generally,however, data retention drops over time because of electron leakage. Amean threshold voltage that starts at 2.5 volts, for example, mayinstead be 2.2 volts after 60 months. Ways in which these and otherenvironmental variables are used are set forth in greater detail below.

Calibrator 110 may also use a parameter-estimation method such as theone described in U.S. Patent Publication No. 2008/0106936 A1, thecontents of which are incorporated by reference in its entirety, or aleast-mean-squares algorithm. If using a parameter-estimation method,the environmental variables may serve to initialize theparameter-estimation method. For example, a method may be used toinitialize a mean threshold voltage as a function of the currentoperating temperature. This mean threshold voltage can then be used as astarting point for the parameter-estimation method. The environmentalvariables may be used as parameters within the parameter-estimationmethod. For example, the cycle count may be used to set the step size ofthe least-mean-squares algorithm. As the cycle count increases so doesthe step size for the least-mean-squares algorithm.

Note that the entities shown in FIG. 1 may be implemented in software,hardware, or a combination of both and may be further divided orcombined, such as calibrator 110 being within or separate from flashcontroller 108.

Threshold-Voltage Distributions

FIG. 4 illustrates threshold-voltage distributions 400 for an array ofmulti-level flash memory cells (MLC) (here two-bit cells). Thehorizontal axis shows the threshold voltage in volts. The vertical axisshows the percentage of flash memory cells that have a particularthreshold voltage. Distribution 402 plots a Gaussian distribution ofthreshold voltages associated with a data value in the flash memory celland is shown with a solid line. The mean threshold voltage fordistribution 402 is shown at 404 as 0.125 volts with a standarddeviation (not shown) of 0.04 volts. Roughly 68% of the cells written ata target threshold voltage of 0.125 volts will end up with a thresholdvoltage of 0.125+/−0.04 volts (0.085-0.165 volts).

As environmental variables change, voltage threshold distribution 402often also changes. A changed Gaussian distribution 406 represents adistribution of threshold voltages associated with the same data valuein the flash memory cells but changed due to some factor (environment orotherwise) and is shown with a dashed line. FIG. 4 also illustrates achanged mean 408 for changed Gaussian distribution 406. Changed Gaussiandistribution 406 has a mean threshold voltage 408 of 0.135 volts and astandard deviation (not shown) of 0.04 volts. The distribution haseffectively shifted 0.01 volts. This may be caused by a rise intemperature of the flash memory cells due to use of a flash memory ofwhich the cells are a part.

As this example concerns two-bit-cells, four data values (00, 01, 10,and 11) are possible, each of which has a correspondingthreshold-voltage distribution. FIG. 4 shows three additional sets oforiginal and changed Gaussian distributions (410, 412, and 414). Eachline of distributions 410, 412, and 414 is roughly identical to thefirst distribution discussed above, except that they are at highervoltage thresholds.

Reference voltages 416, 418, and 420 represent reference voltages usedto read the flash memory cell and are shown with dashed lines. Each ofthese reference voltages is adjustable based on a changed mean and/orstandard deviation of each distribution. These reference voltages areadjustable so that each reference voltage continues to define a borderbetween two distributions (and thus two data values).

Methods for Calibrating Flash Memory Cells

This disclosure describes techniques for calibrating read and/or writeconfigurations of flash memory cells using environmental variables,thereby improving calibration performance and read and/or writeaccuracy. These techniques include two methods illustrated below, whichmay be used separately or in combination. Aspects of these methods maybe implemented in hardware, firmware, software, or a combinationthereof. The methods are shown as a set of acts that specify operationsperformed by one or more entities and are not necessarily limited to theorder shown.

FIG. 5 illustrates a method 500 for setting a read and/or writeconfiguration using an environmental variable. At 502, an environmentalvariable is received. At 504, a write configuration and/or a readconfiguration is set using the environmental variable. This method maybe performed prior to, or as part of, a read or write operation on apage of flash memory cells.

An environmental variable may be a current operating temperature of theflash memory, power-supply voltage, manufacturing processes, material,design, the amount of time elapsed since data was last written to aflash memory cell, and/or the cycle count, to name a few. This list ofexample environmental variables is not meant to be exhaustive. Theenvironmental variable may include any environmental factor that mayaffect a threshold voltage of a flash memory cell.

The environmental variables may be received from a variety of sources,such as a thermister capable of measuring a temperature of the flashmemory device or circuitry capable of determining a voltage supplied tothe flash memory device. Other sources, such as data store, may provideother environmental variables, including cycle count for a page of flashmemory cells, information concerning manufacturing processes, materials,or design, or an amount of time elapsed since data was last written to apage of flash memory cells.

At 504, a write and/or read configuration is set based at least in parton the received environmental variable. The environmental variable canbe used as a variable within a predetermined function to calculate themean and standard distribution for threshold voltages of each ofpossible data values within a page of flash memory cells. Alternatively,multiple environmental variables are used in this function. The mean andstandard deviation are saved as flash-memory parameters to a writeconfiguration. During a write operation, the determined mean thresholdvoltage is used as a target threshold voltage to set for the flashmemory cell.

This function or predetermined function in which the environmentalvariable may be used is determined based on testing and prior knowledgeof the flash memory. Thus, a particular type of flash memory can betested at ranges of temperatures, for example, thereby determining arelationship between the temperature and the threshold voltages. Thistesting or historic knowledge provides a systematic relationship betweenenvironmental factors and their effect on voltages, thereby permittingmore-reliable operations through faster and/or more accurate estimationsof the behavior of the flash memory.

The mean and standard deviation are used to calculate appropriatereference voltages for distinguishing between different voltagethreshold distributions and thus different data values. The referencevoltages are saved as flash-memory parameters to a read configuration.During a read operation the determined reference voltages are used todetermine at which data value a threshold voltage of a flash memory cellresides.

Consider method 500 in the context of FIGS. 1 and 4. In such a context,at 502, calibrator 110 receives one or more environmental variables andat 504, calibrator 110 uses these environmental variables to determine amean threshold voltage and standard deviation for each data valuepossible to be stored within flash memory cells 106. Calibrator 110 usesthe mean and standard deviation to determine an appropriate voltagelevel for reference voltages 416, 418, and 420. This information isstored within flash controller 108 for use in reading or writing flashmemory cells 106.

Calibrator 110 may also use a parameter-estimation method. One suchparameter-estimation method determines the threshold voltages ofmultiple known flash memory cells. For example, consider a page oftwo-bit cells. A set of 100 cells may be pre-populated so that each datavalue is stored in 25 of the cells. These known cells are then readusing multiple reference voltages to determine the threshold voltages ata more precise level than a normal read. A starting reference voltage isapplied and then incremental reference voltages are applied until thethreshold voltage is determined down to a relatively low margin of error(e.g., 0.005 volts).

The environmental variables may be used to initialize or modify thisparameter-estimation method, including as part of a predeterminedfunction to calculate the mean threshold voltage. This calculated meanthreshold voltage is used as the starting reference voltage for theparameter-estimation method. The environmental variable may also orinstead be used as a variable within the parameter-estimation method.

FIG. 6 illustrates a chart 600 of threshold-voltage distributions for asingle data value that can be stored in flash memory cell 106. A solidline shows a starting distribution 602 for the data value. Due to cyclecount and temperature the actual distribution 604 has changed (shown asa dashed line). The mean and standard deviation for startingdistribution 602 are 0.125 volts and 0.04 volts, respectively. The meanand standard deviation for actual distribution 604 are 0.33 volts and0.05 volts, respectively.

Conventional parameter-estimation methods are performed without usingenvironmental variables. By way of example, consider a conventionalcalibrator (not shown) that applies a reference voltage at 0.125 volts.Assume that this conventional calibrator increments the referencevoltage up or down by 0.05 volts until a precise voltage threshold isdetermined. The average number of reads that this conventionalcalibrator would use for the example distributions in FIG. 6 isapproximately 42 (((0.33−0.125)/0.005)+1). This conventionalparameter-estimation method's performance can be improved by increasingthe increment size (e.g., from 0.005 to 0.05 volts) but this wouldresult in a loss of accuracy. This lack of accuracy may then result inread and write failures.

By using one or more environmental variables to initialize and/or modifya parameter-estimation method, however, accuracy and performance canboth be gained. This provides a starting point that is more accurate,and thus permits either fewer increments or greater accuracy. Alteringthe ongoing example, consider calibrator 110 using a temperature of theflash memory and a cycle count of a page of cells (e.g., similar to thatshown in FIG. 2 at 200) to calculate a starting reference voltage of0.32 volts rather than the 0.125 volts given above. Calibrator 110 thenapplies this starting reference voltage and increments the referencevoltage up or down by 0.05 volts until a precise voltage threshold isdetermined. The average number of reads for the example distributions inFIG. 6 are approximately 8 (((0.33−0.295)/0.005)+1) rather than theabove-noted 42 for the conventional method. Note that the 0.33 is theactual mean shown at distribution 604 in FIG. 6, with the low and highvoltages being 0.035 above and below the actual mean established by thestandard deviation (thus, the 0.295 and 0.365 volts are based on 51.7percent of the distribution around 0.33 volts).

This is a significant improvement in performance with little or no costto accuracy. Given that environmental variables often affect thethreshold-voltage distributions in deterministic ways, it is possible tocalculate the mean threshold voltage accurately before performing theparameter-estimation method. The parameter-estimation method thenrefines the mean to a higher level of accuracy.

FIG. 7 illustrates a method 700 for using a threshold voltage value towrite a data value to a flash memory cell, such as the writeconfiguration determined by method 500 as described above. At 702, athreshold voltage value is received. This threshold voltage value iscalculated based on one or more environmental variables. It may alsohave been further refined, such as by a parameter-estimation method. At704, a data value is written to the flash memory cell using thethreshold voltage value as a target threshold voltage.

By way of example, consider method 700 in the context of FIG. 1.Calibrator 110 stores a mean threshold voltage in flash controller 108for a page of cells. This mean threshold voltage is the thresholdvoltage value received by flash controller 108 at 702. At 704, flashcontroller 108 uses this threshold voltage value as the target thresholdvoltage when writing that data value to a cell within the page of cells.A target threshold voltage is the threshold voltage that flashcontroller 108 uses to store within the cell by setting an amount ofcharge on the cell (on cell's floating gate).

FIG. 8 illustrates a method 800 for using a reference voltage value toread a data value from a flash memory cell, such as the readconfiguration determined by method 500 as described above. At 802, areference voltage value is received. This reference voltage value iscalculated based on one or more environmental variables. It may alsohave been further refined, such as by a parameter-estimation method. At804, a data value is read from the flash memory cell using the referencevoltage value.

By way of example, consider method 800 in the context of FIG. 1.Calibrator 110 stores a reference voltage in flash controller 108 for apage of cells. This reference voltage is adjustable based on a changedmean or standard deviation, which is based on an environment variable.By adjusting this (and likely other reference voltages), a borderbetween voltage distributions, and thus data values, is established.Further, this established border is more-accurately or more-quicklydetermined than conventional methods permit.

One or more of the techniques described above can be performed by one ormore programmable processors executing a computer program to performfunctions by operating on input data and generating output. Generally,the techniques can take the form of an entirely hardware embodiment, anentirely software embodiment, or an embodiment containing both hardwareand software components. In one implementation, the methods areimplemented in software, which can include but is not limited tofirmware, resident software, and microcode. Furthermore, the methods cantake the form of a computer program product accessible from acomputer-usable or computer-readable medium providing program code foruse by or in connection with a computer or any instruction executionsystem.

For the purposes of this description, a computer-usable orcomputer-readable medium can be any apparatus that can contain, store,communicate, propagate, or transport the program for use by or inconnection with the instruction execution system, apparatus, or device.The medium can be an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system (or apparatus or device) or apropagation medium. Examples of a computer-readable medium include asemiconductor or solid state memory, magnetic tape, a removable computerdiskette, a random access memory (RAM), a read-only memory (ROM), arigid magnetic disk and an optical disk. Current examples of opticaldisks include compact disk-read only memory (CD-ROM), compactdisk-read/write (CD-R/W) and DVD.

Although the subject matter has been described in language specific tostructural features and/or methodological techniques and/or acts, it isto be understood that the subject matter defined in the appended claimsis not necessarily limited to the specific features, techniques, or actsdescribed above, including orders in which they are performed.

What is claimed is:
 1. A system comprising: flash memory cells; and aflash controller, the flash controller configured to: receive athreshold voltage value, the threshold voltage value calculated based onat least one environmental variable; and write a data value to a flashmemory cell of the flash memory cells using the threshold voltage valueas a target threshold voltage.
 2. The system as recited in claim 1,further comprising a calibrator, the calibrator configured to calculatethe threshold voltage value based on the at least one environmentalvariable.
 3. The system as recited in claim 2, wherein the calibrator isfurther configured to refine the threshold voltage value using aparameter-estimation method.
 4. The system as recited in claim 1,wherein the flash controller is further configured to: receive areference voltage value, the reference voltage value calculated based onthe at least one environmental variable; and read a second data valuefrom a second flash memory cell of the flash memory cells using thereference voltage value.
 5. The system as recited in claim 4, furthercomprising a calibrator, the calibrator configured to calculate thereference voltage value based on the at least one environmentalvariable.
 6. A system comprising: a flash controller; and a calibratorassociated with the flash controller, the calibrator configured to:receive at least one environmental variable, the at least oneenvironmental variable affecting threshold voltages or referencevoltages of flash memory cells; and set a write configuration or a readconfiguration using the at least one environmental variable, the writeconfiguration useable for writing data values to the flash memory cells,the read configuration useable for reading the data values from theflash memory cells.
 7. The system as recited in claim 6 furthercomprising the flash memory cells.
 8. The system as recited in claim 6,wherein the at least one environmental variable is: a current operatingtemperature of the flash memory cells; a power-supply voltage; amanufacturing process, material, or design; an amount of time elapsedsince data was last written to the flash memory cells; or a cycle countfor a flash memory cell of the flash memory cells, the cycle countindicating a number of times that the flash memory cell has beenaccessed.
 9. The system as recited in claim 6, wherein the flashcontroller is further configured to write a first data value to one ofthe flash memory cells by setting the flash memory cell's targetthreshold voltage to a value determined based on the at least oneenvironmental variable.
 10. The system as recited in claim 6, whereinthe flash controller is further configured to read a data value from oneof the flash memory cells by applying a reference voltage value that isdetermined based on the at least one environmental variable.
 11. Thesystem as recited in claim 6, wherein the calibrator is configured toset the write configuration by: initializing or modifying aparameter-estimation method using the at least one environmentalvariable; determining, using the parameter-estimation method, aflash-memory parameter; and setting the write configuration using theflash-memory parameter.
 12. The system as recited in claim 6, whereinthe calibrator is configured to set the read configuration by:determining a flash-memory parameter based on the at least oneenvironmental variable; and setting the read configuration using theflash-memory parameter.
 13. The system as recited in claim 12, whereinthe flash-memory parameter is a reference voltage value.
 14. The systemas recited in claim 13, wherein the calibrator is configured todetermine the reference voltage value by determining a mean and standarddeviation of a threshold-voltage distribution of a data value for one ofthe flash memory cells.
 15. The system as recited in claim 6, whereinthe calibrator is configured to set the read configuration by:initializing or modifying a parameter-estimation method based on the atleast one environmental variable; determining, using theparameter-estimation method, a flash-memory parameter; and setting theread configuration using the flash-memory parameter.
 16. The system asrecited in claim 6, wherein the calibrator comprises:computer-executable instructions configured to be executed by the flashcontroller; computer hardware logic that is internal to the flashcontroller; or computer hardware logic that is external to the flashcontroller.
 17. A method comprising: receiving, at a flash controller, areference voltage value, the reference voltage value received from andcalculated by a calibrator associated with the flash controller, thecalculation based on at least one environmental variable; and reading,by the flash controller, a data value from a flash memory cell using thereference voltage value.
 18. The method as recited in claim 17, whereinthe at least one environment variable is: a current operatingtemperature of the flash memory cell; a power-supply voltage; amanufacturing process, material, or design; an amount of time elapsedsince data was last written to the flash memory cell; or a cycle countfor the flash memory cell, the cycle count indicating a number of timesthat the flash memory cell has been accessed.
 19. The method as recitedin claim 17, further comprising determining the reference voltage valueusing a mean and standard deviation of a threshold-voltage distributionof a data value for the flash memory cell.
 20. The method as recited inclaim 17, wherein the reference voltage value is refined by thecalibrator using a parameter-estimation method.